/*
 * TestHash.cpp
 *
 *  Created on: 29/10/2009
 *      Author: hernan
 */


#include "../Util/Compresor/Arithmetic/Dynamic/ContextTable.h"
#include <iostream>
#include "../Util/Compresor/CompresorUtil.h"


using namespace std;


class TestContextTable {

public:

	ContextTable *tabla;

public:

	void Setup () {
		tabla = new ContextTable(6);
	}

	void UpdateTabla() {

		char p =  static_cast<char>(1);

		char e =  static_cast<char>(5);



		tabla->updateTable(p, e);


		return;
	}

	void GetProbability(){

		char p =  static_cast<char>(1);

		char e =  static_cast<char>(5);

		char i =  static_cast<char>(4);

		char eof =  static_cast<char>(0);

		float resultado = tabla->getAcummulatedProbability(p,e);

		cout << resultado << endl;

		resultado = tabla->getAcummulatedProbability(p,eof);

		cout << resultado << endl;

		resultado = tabla->getAcummulatedProbability(p,i);

		cout << resultado << endl;

		resultado = CompresorUtil::calculateAcummulateProbability(25,37,14);

		cout << resultado << endl;

		char caracterDescomprimido = tabla->getCharByAcummulatedProbability(resultado,p);

		cout << caracterDescomprimido << endl;

		resultado = tabla->getAcummulatedProbability(p,caracterDescomprimido);

		cout << resultado << endl;

	}

	void Terminar () {
		delete tabla;

		cout << "Se completo TestContextTable"<< endl;
	}

	void Run() {
		Setup();
		UpdateTabla();
		GetProbability();
		Terminar();
	}


};

